package com.cctc.rds.scheduler.core.task.impl;

import com.cctc.rds.scheduler.core.task.Task;

/**
 * 任务适配器。
 *
 * @param <T> 任务参数类型
 *            - 任务参数实例将被序列化保存在任务日志中，以便延迟调度客户端在拉取到期执行的任务实例时进行反序列化 [ T getTaskParam（）]，
 *            根据任务参数实例自动执行任务。
 */
public abstract class TaskAdapter<T> implements Task<T> {
    private Task<T> task;

    public TaskAdapter(Task<T> task) {
        this.task = task;
    }

    @Override
    public String getTaskName() {
        return task.getTaskName();
    }

    @Override
    public Class<T> getTaskParamType() {
        return task.getTaskParamType();
    }

    @Override
    public boolean run(long curPeriod, T taskParam) {
        return task.run(curPeriod, taskParam);
    }
}
